#!/bin/sh

# 使用说明，用来提示输入参数
usage() {
	echo "Usage: sh 执行脚本.sh [port|base|modules|stop|rm]"
	exit 1
}

# 开启所需端口
port(){
	firewall-cmd --add-port=80/tcp --permanent
	firewall-cmd --add-port=1883/tcp --permanent
	firewall-cmd --add-port=8083/tcp --permanent
	firewall-cmd --add-port=8883/tcp --permanent
	firewall-cmd --add-port=8084/tcp --permanent
	firewall-cmd --add-port=18083/tcp --permanent
	firewall-cmd --add-port=8080/tcp --permanent
	firewall-cmd --add-port=8848/tcp --permanent
	firewall-cmd --add-port=9848/tcp --permanent
	firewall-cmd --add-port=9849/tcp --permanent
	firewall-cmd --add-port=6379/tcp --permanent
	firewall-cmd --add-port=6030/tcp --permanent
	firewall-cmd --add-port=6270/tcp --permanent
	firewall-cmd --add-port=6271/tcp --permanent
	firewall-cmd --add-port=6272/tcp --permanent
	firewall-cmd --add-port=3306/tcp --permanent
	firewall-cmd --add-port=9100/tcp --permanent
	firewall-cmd --add-port=9200/tcp --permanent
	firewall-cmd --add-port=9201/tcp --permanent
	firewall-cmd --add-port=9202/tcp --permanent
	firewall-cmd --add-port=9203/tcp --permanent
	firewall-cmd --add-port=9300/tcp --permanent
	firewall-cmd --add-port=9301/tcp --permanent
	firewall-cmd --add-port=9302/tcp --permanent
	firewall-cmd --add-port=9303/tcp --permanent
	firewall-cmd --add-port=9304/tcp --permanent
	firewall-cmd --add-port=9305/tcp --permanent
	firewall-cmd --add-port=9306/tcp --permanent
	firewall-cmd --add-port=9307/tcp --permanent
	service firewalld restart
}

# 启动基础环境（必须）
base(){
	docker-compose up -d yytek-iot-mysql yytek-iot-redis yytek-iot-nacos
}

# 启动程序模块（必须）
modules(){
	docker-compose --env-file jarStart.env up -d yytek-iot-nginx yytek-iot-gateway yytek-iot-auth yytek-iot-modules-system
}

# 启动网关模块
gw(){
	docker-compose --env-file jarStart.env up -d yytek-iot-gw-modbus yytek-iot-gw-mqtt yytek-iot-gw-tcp
}

# 启动业务模块
device(){
	docker-compose --env-file jarStart.env up -d yytek-iot-modules-tddb yytek-iot-modules-upgrade yytek-iot-modules-pm yytek-iot-modules-nmp yytek-iot-modules-am yytek-iot-modules-job
}

# 关闭所有环境/模块
stop(){
	docker-compose stop
}

# 删除所有环境/模块
rm(){
	docker-compose rm
}

# 根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$1" in
"port")
	port
;;
"base")
	base
;;
"modules")
	modules
;;
"gw")
	gw
;;
"device")
	device
;;
"stop")
	stop
;;
"rm")
	rm
;;
*)
	usage
;;
esac
